﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SIPDTO;

namespace SIP
{
    public partial class Personas : System.Web.UI.Page
    {

        #region ** Declaración de variables

        SIPBLL.SIPBLL _bll = new SIPBLL.SIPBLL();
        dtoPersonas _dtopersonas = new dtoPersonas();
        List<dtoPersonas> _dtpersonas = new List<dtoPersonas>();
        dtoError _resp = new dtoError();
        List<dtoTiposIdentificacion> _dttiposid = new List<dtoTiposIdentificacion>();

        #endregion

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ObtenerTiposId();
                
                if (Convert.ToBoolean(Session["Crear"]) == true)
                {
                    CleanControl(this.Controls);
                    if (Convert.ToInt16((ddlTipoIdentificacion).SelectedValue) == 0) 
                    {
                        DesactivarTodosBotones();
                    }
                   
                }
                else
                {
                    BuscarLaico();
                    ddlTipoIdentificacion.Enabled = false;
                    mskCedula.Enabled = false;
                    txtNombre.Enabled = false;
                  
                }
            }
            else { if (Convert.ToBoolean(Session["Crear"]) == false) { mskCedula.Enabled = false; } }

        }

        public void CleanControl(ControlCollection controles)
        {
            foreach (Control control in controles)
            {
                if (control is TextBox)
                    ((TextBox)control).Text = string.Empty;
                else if (control is DropDownList)
                    ((DropDownList)control).ClearSelection();
                else if (control is RadioButtonList)
                    ((RadioButtonList)control).ClearSelection();
                else if (control is CheckBoxList)
                    ((CheckBoxList)control).ClearSelection();
                else if (control is RadioButton)
                    ((RadioButton)control).Checked = false;
                else if (control is CheckBox)
                    ((CheckBox)control).Checked = false;
                else if (control.HasControls())   //Esta linea detécta un Control que contenga otros Controles                    
                    //Así ningún control se quedará sin ser limpiado.                   
                    CleanControl(control.Controls);
            }
        }

        protected void ddlTipoIdentificacion_SelectedIndexChanged(object sender, EventArgs e)
        {
            //se asigna el tamano a aceptar para el campo identificación

            if (ddlTipoIdentificacion.SelectedItem.Text == "Cédula")
            {
                Cedula.Mask = "999999999";
                lblFormato.Visible = true;
                lblFormato.Text = "Formato: x-xxxx-xxxx (sin guiones)";
                mskCedula.Text = "";
                ActivarBotones();
                mskCedula.Focus();
            }
            if (ddlTipoIdentificacion.SelectedItem.Text == "Pasaporte")
            {
                Cedula.Mask = "999999999999";
                lblFormato.Visible = true;
                lblFormato.Text = "Formato: x-xxxx-xxxx-xxx (sin guiones)";
                mskCedula.Text = "";
                ActivarBotones();
                mskCedula.Focus();
            }
            if ((ddlTipoIdentificacion.SelectedItem.Text == "Cédula Residencia Permanente") || (ddlTipoIdentificacion.SelectedItem.Text == "Cédula Residencia Temporal"))
            {
                Cedula.Mask = "999999999999";
                lblFormato.Visible = true;
                lblFormato.Text = "Formato: x-xxxx-xxxx-xxx (sin guiones)";
                mskCedula.Text = "";
                ActivarBotones();
                mskCedula.Focus();
            }
        }
            
        //Método que permite el registro de feligreses
        protected void Registrar(object sender, EventArgs e)
        {
            try
            {
                if (Page.IsValid == true)
                {
                    if (Convert.ToInt16((ddlTipoIdentificacion).SelectedValue) != 0)
                    {
                        if (Convert.ToBoolean(Session["Crear"]) == true)
                        {
                            _dtopersonas.Nombre = txtNombre.Text;
                            _dtopersonas.Identificacion = mskCedula.Text;
                            _dtopersonas.TipoIdentificacion = Convert.ToInt16(ddlTipoIdentificacion.SelectedValue);
                            _dtopersonas.Direccion = txtDireccion.Text;
                            _dtopersonas.Apellido1 = txtApellido1.Text;
                            _dtopersonas.Apellido2 = txtApellido2.Text;
                          //  _dtopersonas.Telefono = txtTelefono.Text;
                            _dtopersonas.FechaNacimiento = Convert.ToDateTime(dtFecha.Value.ToString()); //Convert.ToDateTime(txtFecha.Text);
                            if (rbtnFemenino.Checked == true)
                            {
                                _dtopersonas.Sexo = 'F';
                            }
                            else
                            {
                                _dtopersonas.Sexo = 'M';
                            }

                            SIPBLL.SIPBLL bll = new SIPBLL.SIPBLL();
                            // se crea la persona en la tabla Personas
                            _resp = bll.RegistrarPersonas(_dtopersonas,1);
                            CleanControl(this.Controls);
                             WebMsgBox.Show(_resp.Mensaje);
                            if (Convert.ToBoolean(Session["Terceros"]) == true)
                            {
                                string strpantallaorigen = Convert.ToString(Session["Origen"]);
                                Response.Redirect(strpantallaorigen);
                            }
                            else
                            {
                                DesactivarTodosBotones();
                            }
                        }
                            // se modifica la información.
                        else 
                        {
                            _dtopersonas.TipoIdentificacion = Convert.ToInt16(ddlTipoIdentificacion.SelectedValue);
                            _dtopersonas.Identificacion = mskCedula.Text;
                            _dtopersonas.Direccion = txtDireccion.Text;
                           // _dtopersonas.Telefono = txtTelefono.Text;                           
                            _resp = _bll.RegistrarPersonas(_dtopersonas,2);
                            if (_resp.IdError == 100)
                            {
                                WebMsgBox.Show(_resp.Mensaje);
                                Response.Redirect("ListadoPersonas.aspx");
                            }
                            else
                            {
                                WebMsgBox.Show(_resp.Mensaje);
                            }
                        }
                    }
                    else { WebMsgBox.Show("Exiten campos pendientes de completar, por favor verifique el Tipo de identificación"); }
                }

            }
            catch (Exception ex)
            {
                _resp.IdError = -100;
                _resp.Mensaje = ex.Message.ToString();
            }
        }

        private void BuscarLaico() //Obtiene la información de la parroquia y la carga en pantalla
        {
            DesactivarBotones();
            _dtopersonas.TipoIdentificacion = Convert.ToInt16(Session["TipoIdentificacion"]);
            _dtopersonas.Identificacion = Convert.ToString(Session["Identificacion"]);
            _dtpersonas = _bll.ObtenerPersona(_dtopersonas);
            mskCedula.Text = _dtpersonas[0].Identificacion;
            ddlTipoIdentificacion.SelectedValue = Convert.ToString(_dtpersonas[0].TipoIdentificacion);
            txtNombre.Text = _dtpersonas[0].Nombre;
            txtApellido1.Text = _dtpersonas[0].Apellido1;
            txtApellido2.Text = _dtpersonas[0].Apellido2;
            txtDireccion.Text = _dtpersonas[0].Direccion;
           // txtTelefono.Text = Convert.ToString (_dtpersonas[0].Telefono);
            if (_dtpersonas[0].Sexo == 'F')
            {
                rbtnFemenino.Checked = true;
            }
            else 
            {
                rbtnMasculino.Checked = true;
            }
            dtFecha.Value = _dtpersonas[0].FechaNacimiento;
          
        }

        public void ObtenerTiposId()
        {
            _dttiposid = _bll.ObtenerTiposId();
            ddlTipoIdentificacion.DataSource = _dttiposid;
            ddlTipoIdentificacion.DataValueField = "Id";
            ddlTipoIdentificacion.DataTextField = "Descripcion";
            ddlTipoIdentificacion.DataBind();
            ddlTipoIdentificacion.Items.Insert(0, new ListItem("Seleccionar Tipo Identificacion", "0"));
        }

        protected void SeleccionMasculino(object sender, EventArgs e) 
        {
            rbtnFemenino.Checked = false;
        }
        protected void SeleccionFemenino(object sender, EventArgs e)
        {
            rbtnMasculino.Checked = false;
        }
       protected void Cancelar(object sender, EventArgs e)
        {
            Response.Redirect("ListadoPersonas.aspx"); // Retorna al listado de personas

        }

        public void ActivarBotones()
        {
            txtNombre.Enabled = true;
            txtApellido1.Enabled = true;
            txtApellido2.Enabled = true; 
            txtDireccion.Enabled = true;
          //  txtTelefono.Enabled = true;
            mskCedula.Enabled = true;
            ddlTipoIdentificacion.Enabled = true;
            dtFecha.Enabled = true;
            rbtnFemenino.Enabled = true;
            rbtnMasculino.Enabled = true;
        }
        public void DesactivarBotones()
        {
            txtNombre.Enabled = false;
            txtApellido1.Enabled = false;
            txtApellido2.Enabled = false;
            txtDireccion.Enabled = true;
          //  txtTelefono.Enabled = true;
            mskCedula.Enabled = false;
            ddlTipoIdentificacion.Enabled = false;
            dtFecha.Enabled = false;
            rbtnFemenino.Enabled = false;
            rbtnMasculino.Enabled = false;
            lblFormato.Visible = false;
        }

        public void DesactivarTodosBotones()
        {
            txtNombre.Enabled = false;
            txtApellido1.Enabled = false;
            txtApellido2.Enabled = false;
            txtDireccion.Enabled = false;
          //  txtTelefono.Enabled = false;
            mskCedula.Enabled = false;
            ddlTipoIdentificacion.Enabled = true;
            dtFecha.Enabled = false;
            rbtnFemenino.Enabled = false;
            rbtnMasculino.Enabled = false;
        }
    }
}